// let arr=[1,2,3]
// let arr2=Object.assign(arr)
// arr2[0]='hh'
// console.log(arr2,arr[0]);
//说明Object.assign只是对象赋值，不是浅拷贝 对象赋值即直接复制原始对象的内存，只要一方改变，另一方也会跟着改变
// 你这个操作改变的并不是a里面的num值呀 你是把整个a重新赋值了一个新对象呀 b还是原来a的地址呀

// 浅拷贝
let obj1={
    name:'坤坤',
    a:[[0],1,2,3]
}

const obj2=shallowClone(obj1)
obj2.name='贤子'
obj2.a[0]=9//a属性是引用类型，用的还是同一块内存
// 如果obj2.a=[1,2]则obj1.a里面的属性不会改，而是把obj2里的a属性指向了另一块内存，只有改变a里面的值才会改变到obj1中的a。
function shallowClone(obj){
    const obj2={}
    for(let i in obj){
        obj2[i]=obj[i]
    }
    return obj2
}

console.log(obj1.name,obj1.a);//坤坤 [ 9, 1, 2, 3 ]
console.log(obj2.name,obj2.a);//贤子 [ 9, 1, 2, 3 ]


